Skip to content

Register full mirrored jars with their network once.#91

Open
calmofthestorm wants to merge 1 commit intomakeo:masterfrom
calmofthestorm:register-full-mirrored-jar
Open

Register full mirrored jars with their network once.#91
calmofthestorm wants to merge 1 commit intomakeo:masterfrom
calmofthestorm:register-full-mirrored-jar

Conversation

@calmofthestorm
Copy link

Currently, full mirrored jars will never register themselves with their
network, meaning that if the server is restarted while a full mirrored
jar is in the world (or if a player places a full mirrored jar for the
first time since the server has started), the jar will be unable to
share essentia with the rest of its network.

This adds a check to register the jar even if it is full. The performance
impact should be minimal since we only check each jar once per run.

To reproduce the problem, link two mirrored jars. Place one in the world, and fill it to full essentia. Keep the second in your inventory. Restart the server, then place the second jar which is in your inventory. The first jar will remain full at 64, while the one you just placed will remain empty. Now use an essentia phial on the full jar, removing 8 essentia. Observe that this causes the jar to register itself with the network, and the remaining 56 essentia then redistributes itself evenly as expected.

Currently, full mirrored jars will never register themselves with their
network, meaning that if the server is restarted while a full mirrored
jar is in the world (or if a player places a full mirrored jar for the
first time since the server has started), the jar will be unable to
share essentia with the rest of its network.

This adds a check to register the jar even if it is full. The performance
impact should be minimal since we only check each jar once per run.
@calmofthestorm
Copy link
Author

Actually there's a much simpler reproduction:

  • Create two mirrored jars
  • Place one, link the other to it, keeping it in your inventory
  • Fill the placed jar to full (64), then break it and put it in your inventory
  • Place the empty jar.
  • Place the full jar.
  • Observe that essentia does not transfer
  • Use a phial on the full jar
  • The remaining 56 essentia distributes evenly

@makeo
Copy link
Owner

makeo commented Feb 24, 2018

Hey, thanks for adding this fix but as you can probably tell I'm currently not working on anything related to Minecraft and don't even have the tools installed to compile/build Gadomancy and I'm not interested in doing any of that. There is one options however: @HellFirePvP does that (I won't judge him if he doesn't do it because he spends his time on mods that are way more awesome and actually worth his time and skill)

@calmofthestorm
Copy link
Author

calmofthestorm commented Feb 24, 2018

No worries; I figured the odds of this getting merged + a new release built with it were pretty negligible:-) I have a fix for the Rhythm of the Beating Anvil in Blood Magic for 1.7.10 in a similar situation:-) I mostly play SSP so I fix these for my own benefit, and then issue a pull request just in case:-)

Thanks for an awesome mod, I really did have a lot of fun with the mirrored jars, and even the debugging was enjoyable.

There's a jar with this fix at
--removed by makeo
if anyone needs it.

@makeo
Copy link
Owner

makeo commented Feb 24, 2018

Sorry but I will remove your link to your build of gadomancy - u can post one on your own repo but I won't promote a build that is not from someone I trust
And no problem for creating it that was alot of fun too! :)

@spannerman79
Copy link

Is there any chance for this PR to be included within Gadomancy?

@calmofthestorm
Copy link
Author

calmofthestorm commented Aug 31, 2019

I suspect not, given new releases are not being cut and the general age of 1.7.10. Even if the PR were merged, new versions of the mod would not be built, even if they were, modpacks would not be updated, etc.

If you just want to play with this fix on your own, or on a server where the admin is willing to trust it (they may not be; see below), the fork of this repo on my account, on the branch "binary" (not the one from this PR), there is a build of this mod with the fix, but no one, including me, will help with any issues encountered (though fwiw I played with it quite a bit myself without incident).

I've been asked not to post a direct link, since Minecraft mods are computer programs which can do pretty much anything, so installing one that is malicious can do a lot of harm. Since makeo does not know me, they do not want to be seen as endorsing a program someone else wrote, since they have no way of knowing whether it is safe. This PR shows a safe change, but it would have been very easy for me to include some evil changes as well in the jar I built (or, in somewhat strange cases, some malware on my system doing it without my own knowledge -- see https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf for some history on that one), and rather challenging for anyone else to verify this did not occur. Basically all you have is me saying I didn't, and I'm just some random internet person.

So you're welcome to download it if you want, but do understand there's a reason the link was removed. Not due to any actual evidence of harm, but because the original author cannot give any assurance of safety.

It's a shame that I've I'd posted my various one-line fixes a few years earlier they'd have been ~zero effort for the authors to accept and roll out, but because it's late, the machinery no longer is working. I'm especially sad about my fix to Rhythm of the Beating Anvil from Blood Magic. But I knew when I wrote these they'd never make it upstream, and it was mostly just for me. Bits rot, all is dust, learn to love the void metal, embrace the warp, etc:-)

Someday I'll move on from 1.7.10. Maybe.

@spannerman79
Copy link

I am well aware of the need to be careful of the sources of jar's. I know how insecure JVM actually is. Even within docker a JVM can still break free of the container under certain conditions.

Attempting to rebuild with the fix in place is..well... frustrating to say the least.

Someday I'll move on from 1.7.10. Maybe.

I tried that, but the fun of nodes, warp and my little void metal minion bodyguards with runic shielding keep calling me back to 1.7.10

@calmofthestorm
Copy link
Author

I can provide you the jar I built awhile back if you like, though as I noted, I've been asked not to post a link here. Feel free to open an issue on my fork of this repo and I will post a link there. No guarantees, etc -- I don't have my setup to rebuild it, or really even remember how I did it. Something about gradlew. I don't know crap about Java.

Offtopic:

I always had issues with my golems, even made out of Thaumium and with runic shield, dying in grinders. Not, like, right away, but they were not reliable, and were pretty expensive. I think there may be a bug with golem armor in Thaumcraft itself, where the iron chestplate upgrade stops working (despite still being visible) after the golem is picked up with it on, or the chunk the golem is in reloads, as I noticed the armor as displayed in WAILA going from 6 or whatever to 1. I even would put lights on timers to give them a chance to heal, add a blood magic ritual to heal them, have the enemies drop nearly dead and then golems deal the killing blow, etc. I kind of wonder if it was uniques with thorns or something, idk.

In general it's a shame how Thaumcraft's entity-based automation tended to bug out/be frustrating in various ways related to being non-invulnerable entities. I rather enjoyed them as a means of automation, but it was hard to justify. Much of my journey with 1.7.10 is trying to find more interesting alternatives to AE2 that aren't also super frustrating. Now I just play Factorio when I feel the automation itch, though I've yet to try it's Thaumcraft clone Thaumaturgic Machinations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants